/*
 * Copyright @ 2024 weili23
 * com.example.mythread.a06threadWaitAndNotify 10:53
 * All right reserved.
 */

package com.example.mythread.a06threadWaitAndNotify;

/**
 * @desc: 消费者
 * @author: weili23
 * @createTime: 2024/10/21 10:53
 * @version: v1.0
 */
public class Eat extends Thread{
    @Override
    public void run() {

        //for 循环
        //同步代码块
        //判断是否能吃，桌子上有没有面条
        //没有就 等待。
        //有就开吃 数量-1，吃完 把桌子上面条标记修改的标记，然后唤醒生产者继续生产
        while (true){
            synchronized (Desk.lock){
                //先判断能不能吃下了
                if(Desk.foodNum ==0){
                    System.out.println("吃货类：吃货吃不下了，已经吃完10碗面条了");
                    break;
                }else{
                    if(Desk.foodFlag ==0){
                        //桌子上没有面条 就等待生产者生产
                        try {
                            Desk.lock.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }else{
                        //有就开吃 数量-1
                        Desk.foodNum--;
                        System.out.println("吃货吃面了，还可以吃："+Desk.foodNum+"碗面条");
                        //吃完 把桌子上面条标记修改的标记
                        Desk.foodFlag = 0;
                        //然后唤醒生产者继续生产
                        Desk.lock.notifyAll();
                    }
                }

            }
        }
    }
}

